کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java – clone کردن یک آبجکت یا ساخت نمونه ی عینی از آبجکت

Java – clone کردن یک آبجکت یا ساخت نمونه ی عینی از آبجکت

عبارت object cloning در برنامه نویسی به معنای ساخت یک نمونه ی عینی از روی آبجکت مورد نظر می باشد. در Java برای دستیابی به این هدف باید متد clone() از کلاس پایه ی Object فراخوانی شود.

آموزش Java

کلاسی که قرار است نمونه ی عینی از آبجکت آن ایجاد شود، بایستی اینترفیس java.lang.cloneable را پیاده سازی کند. اگر اینترفیس Cloneable را پیاده سازی نکنیم، فراخوانی متد clone() سبب صدور خطای CloneNotSupportedException می شود.

متد clone() در کلاس پایه ی Object که پدر تمامی کلاس های جاوا می باشد، تعریف شده. دستور استفاده از متد مزبور به شرح زیر می باشد:

protected Object clone() throws CloneNotSupportedException  

دلیل استفاده از متد clone()

متد clone() فرایند ساخت نمونه ی عینی از روی یک آبجکت را آسان ساخته و میزان قابل توجهی از عملیات پردازشی غیرضروری برای این منظور را از میان برمی دارد. زمانی که برای ساخت آبجکت جدید در حافظه از کلیدواژه ی new استفاده می کنید، در واقع عملیات پردازشی غیرضروری زیادی انجام می شود که منابع و زمان مورد توجهی را به خود تخصیص می دهد. به همین دلیل از object cloning استفاده می کنیم.

مزیت اصلی استفاده از قابلیت Object cloning به شرح زیر می باشد:

  • عملیات پردازشی بسیار کمتری صورت می پذیرد.

در زیر یک مثال کاربردی از فراخوانی متد clone() (ساخت نمونه ی عینی از آبجکت مورد نظر) را مشاهده می کنید:

class Student18 implements Cloneable{  
int rollno;  
String name;  
Student18(int rollno,String name){  
this.rollno=rollno;  
this.name=name;  
}  
public Object clone()throws CloneNotSupportedException{  
return super.clone();  
}  
public static void main(String args[]){  
try{  
Student18 s1=new Student18(101,"amit");  
Student18 s2=(Student18)s1.clone();  
System.out.println(s1.rollno+" "+s1.name);  
System.out.println(s2.rollno+" "+s2.name);  
}catch(CloneNotSupportedException c){}  
}  
}  

خروجی:

101 amit
101 amit

همان طور که در مثال بالا مشاهده می کنید، هر دو متغیر اشاره گر (آبجکت های ساخته شده از روی کلاس Studnet18) مقداری یکسان را دارند. متد clone() مقادیر یک آبجکت را در آبجکت دیگر جایگذاری می کند و برای نیل به این هدف لازم نیست کد کپی کردن یک آبجکت در آبجکت دیگر را به صورت صریح بنویسیم.

حال اگر به وسیله ی کلیدواژه ی new، آبجکت دیگری ایجاد کرده و مقادیر آن آبجکت را در این آبجکت قرار دهید، میزان قابل توجهی عملیات پردازشی غیرضروی انجام می شود. ما با استفاده از متد clone() بسیاری از پردازش های غیرضروی را فاکتور گرفته و در زمان و منابع مورد نیاز برای کپی کردن آبجکت صرفه جویی کردیم.

1396/07/10 6878 1829
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...